package b_factorypattern.factory_method;


/**
 *  如果沿用 简单工厂那种咖啡店，如果有工厂
 */
public class CoffeeStore {

    private CoffeeFactory factory;

    /**
     * 用set的方法，做大了插拔的效果
     */

    public void setFactory(CoffeeFactory factory) {
        this.factory = factory;
    }

    //点咖啡功能
    public Coffee orderCoffee() {
        Coffee coffee = factory.createCoffee();
        //加配料
        coffee.addMilk();
        coffee.addsugar();
        return coffee;
    }


    // 这种简单工厂的写法，如果删除了工厂，所有用到的店铺都要修改，这是将简单工厂的毛病带到工厂方法中来了，
    // 这个工厂方法就白用了
    public Coffee orderCoffee(String type) {
        Coffee coffee  =null;
        //声明Coffee类型的变量，根据不同类型创建不同的coffee子类对象
        if ("american".equals(type)){
            CoffeeFactory factory = new AmericanCoffeeFatory() ;
            coffee= factory.createCoffee();
            coffee.addMilk();
            coffee.addsugar();
        }
        return coffee ;
    }
}
